草庐IT

java vs C++ 通过引用传递

全部标签

go - 如何在函数中传递指向结构的指针?

我想知道如何将*Type替换为?什么地址里面有结构?//mycode.gopackagemainimport"fmt"funcout(k*Type){fmt.Println(k)}funcmain(){typeDataIPstruct{Title,Descstring}Data:=DataIP{"Hello!","HelloGO!",}out(&Data)} 最佳答案 您需要在main()之外定义类型DataIP,该类型在包的范围内,而不仅仅是在main函数内:packagemainimport"fmt"typeDataIPstru

go - 作为参数传递时结构成员的范围可见性?

例如,通过传递结构调用json.Decoder.Decode时type_Samplestruct{firststring//thiswillnotbefilledbecauseitstartswithlowercaseletterSecondstring//itisOK.}...varsample_Sampleerr:=decoder.Decode(&sample)根据LanguageSpecification写的:Exportedidentifiers¶Anidentifiermaybeexportedtopermitaccesstoitfromanotherpackage.Anid

go - *文件类型如何作为阅读器类型传递?

我刚接触golang。我看到了这样一段golang代码:file,err:=os.Open("input.txt")iferr!=nil{log.Fatal(err)}deferfile.Close()scanner:=bufio.NewScanner(file)...根据文档,os.Open返回(*File,error)类型,和bufio.NewScanner(r)的论点r有io.Reader类型。在上面的代码示例中,变量file其类型为*File(指向File类型的指针)可以传递给bufio.NewScanner参数期望的方法io.Reader类型。这怎么可能?我检查了源代码,Fi

arrays - 在 Golang 中将指针传递给字符串数组

这个问题在这里已经有了答案:Slicingaslicepointerpassedasargument(1个回答)关闭5年前。我试图将字符串数组传递给函数,打印值,修改它,然后在函数完成时打印字符串数组的值。这是我的示例代码,它不起作用但展示了我想要实现的目标:packagemainimport("fmt")funcSendData(a*[]string){fmt.Println(*a)*a=*a[:0]}funcmain(){vars[]strings=append(s,"dat","boi")SendData(&s)fmt.Println(s)}这是编译时的错误:cannotslic

go - 什么是 Golang 中的无效内存地址或零指针取消引用,我该如何解决?

关闭。这个问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭5年前。Improvethisquestion我收到以下错误:panic:runtimeerror:invalidmemoryaddressornilpointerdereference[signal0xbcode=0x1addr=0x0pc=0x400da9]goroutine125[runnin

dictionary - 内置 map 方法引用

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭4年前。Improvethisquestion请帮助查找内置map类型方法列表。来源还可以。我在不同的示例中看到了Add和Set,我想知道它们之间的区别。找到以下内容但没有提供任何帮助:https://golang.org/src/runtime/hashmap.go-实现,但接口(interface)在哪里?https://blog.golang.org/go-maps-in-action-关于map的文章,但找不到完整的方法列表。

function - 在go函数中将函数作为参数传递

我想在go函数中将函数作为参数传递。这是我的代码:funcCall(pathstring,methodfunc()){//TODOlaunchthemethodhere}当我想调用这个函数时,我想这样做:funcroutes(){app.Call("/",controllers.Index())}Index()方法是:funcIndex(reshttp.ResponseWriter,reqhttp.Request){userAgent:=req.Header.Get("User-Agent")fmt.Fprintf(res,"You'reUser-Agentis%s",userAgen

go - 如何将函数内部创建的变量作为指向另一个函数的指针传递

嗨,这里是Golang新手,如何将变量作为指针参数传递给另一个函数。funcB(temp*?,event*Event){temp["filla_a"]=event.Data["filla_a"]returntemp}funcA(event*Event){temp:=make(map[string]interface{})temp["po_id"]=event.Data["id"]temp=B(temp,event)}如何在golang中实现这一点? 最佳答案 在go中可以这样做:packagemainimport("fmt")typ

json - 如何解析 Unmarshaled 结构中的引用

我有两个在Go中解码的json文件。第一个包含某种类型的对象,该对象由第二组中的ID引用。//Foo{"id":5,"key":"value"}和//Bar{"name":"bar","fooReferenceId":5}我想以struct结束typeBarstruct{NamestringFoo*Foo}有没有一种方法可以直接实现这一点,类似于我们提供json:"..."key解析器的方式?有点像typeBarstruct{Namestring`json:"name"`Foo*FooresolveFooById(`json:"fooReferenceId"`)}

go - 为什么 sync.WaitGroup、sync.Mutex 不引用 channel 、 slice 等类型?

如果Waitgroups和Mutex总是需要通过引用传递,我们不能把它做成引用类型(禁止使用它们作为值传递)吗?我的意思是有没有我们需要使用它们按值传递的用例? 最佳答案 当您将任何参数作为值传递时,该值将被复制。这些参数的任何修改都将在func中进行。当func退出时,这些更改将消失。在WaitGroup或Mutex的情况下你不想要这个,因为你想共享状态。如果所有修改都是本地的,您将无法同步任何内容,因为您将拥有许多具有不同状态的不同副本。一个有效的情况可能是您想要复制一个WaitGroup或Mutex,但那将是非常隐含的代码并且